/*
 * automatic.h
 *
 *  Created on: Oct 21, 2012
 *      Author: robot
 */

#ifndef AUTOMATIC_H_
#define AUTOMATIC_H_

#include "ros/ros.h"
#include <driver/Move.h>
#include <SLAM/SwitchPhase.h>

#include <behavior/behavior.h>
#include <behavior/wallfollow.h>
#include <behavior/obstacleAvoidance.h>
#include <behavior/exploration.h>
#include <behavior/navigation.h>

/**
 *	Automatic controller class.
 **/
class Automatic
{
public:
	Automatic ();
	void 						switchPhase(const SLAM::SwitchPhase::ConstPtr& msg);

private:
	std::vector<Behavior *> 	behaviors;
	Behavior * 					selectBehavior();
	ros::Publisher 				move_publisher;
	ros::Publisher 				phase_publisher;
	ros::Subscriber 			phase_subscriber;
};



#endif /* AUTOMATIC_H_ */
